From c9557c207f3ca927af216723e88bfec22a37999e Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 14 Mar 2018 04:38:18 +0100 Subject: [PATCH] iconhelper: Handle texture scale again We will need that in the next commits. --- gtk/gtkcellrendererpixbuf.c | 2 +- gtk/gtkiconhelper.c | 4 ++-- gtk/gtkimagedefinition.c | 8 ++++++-- gtk/gtkimagedefinitionprivate.h | 3 ++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/gtk/gtkcellrendererpixbuf.c b/gtk/gtkcellrendererpixbuf.c index a217634f94..1c043a3a46 100644 --- a/gtk/gtkcellrendererpixbuf.c +++ b/gtk/gtkcellrendererpixbuf.c @@ -381,7 +381,7 @@ gtk_cell_renderer_pixbuf_set_property (GObject *object, take_image_definition (cellpixbuf, gtk_image_definition_new_surface (g_value_get_boxed (value))); break; case PROP_TEXTURE: - take_image_definition (cellpixbuf, gtk_image_definition_new_texture (g_value_get_object (value))); + take_image_definition (cellpixbuf, gtk_image_definition_new_texture (g_value_get_object (value), 1)); break; case PROP_ICON_SIZE: gtk_cell_renderer_pixbuf_set_icon_size (cellpixbuf, g_value_get_enum (value)); diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c index 54a8212d30..26c1b2ca4a 100644 --- a/gtk/gtkiconhelper.c +++ b/gtk/gtkiconhelper.c @@ -294,7 +294,7 @@ ensure_paintable_from_texture (GtkIconHelper *self, GdkTexture *texture, int *scale) { - *scale = 1; + *scale = gtk_image_definition_get_storage_type (self->def); return g_object_ref (GDK_PAINTABLE (texture)); } @@ -626,7 +626,7 @@ void _gtk_icon_helper_set_texture (GtkIconHelper *self, GdkTexture *texture) { - gtk_icon_helper_take_definition (self, gtk_image_definition_new_texture (texture)); + gtk_icon_helper_take_definition (self, gtk_image_definition_new_texture (texture, 1)); } void diff --git a/gtk/gtkimagedefinition.c b/gtk/gtkimagedefinition.c index 561b2b296e..c3b8a456da 100644 --- a/gtk/gtkimagedefinition.c +++ b/gtk/gtkimagedefinition.c @@ -57,6 +57,7 @@ struct _GtkImageDefinitionTexture { gint ref_count; GdkTexture *texture; + int scale; }; struct _GtkImageDefinitionPaintable { @@ -150,7 +151,8 @@ gtk_image_definition_new_surface (cairo_surface_t *surface) } GtkImageDefinition * -gtk_image_definition_new_texture (GdkTexture *texture) +gtk_image_definition_new_texture (GdkTexture *texture, + gint scale) { GtkImageDefinition *def; @@ -159,6 +161,7 @@ gtk_image_definition_new_texture (GdkTexture *texture) def = gtk_image_definition_alloc (GTK_IMAGE_TEXTURE); def->texture.texture = g_object_ref (texture); + def->texture.scale = scale; return def; } @@ -234,11 +237,12 @@ gtk_image_definition_get_scale (const GtkImageDefinition *def) g_assert_not_reached (); case GTK_IMAGE_EMPTY: case GTK_IMAGE_SURFACE: - case GTK_IMAGE_TEXTURE: case GTK_IMAGE_PAINTABLE: case GTK_IMAGE_ICON_NAME: case GTK_IMAGE_GICON: return 1; + case GTK_IMAGE_TEXTURE: + return def->texture.scale; } } diff --git a/gtk/gtkimagedefinitionprivate.h b/gtk/gtkimagedefinitionprivate.h index 8cdb26c9e6..66ccae8be5 100644 --- a/gtk/gtkimagedefinitionprivate.h +++ b/gtk/gtkimagedefinitionprivate.h @@ -29,7 +29,8 @@ GtkImageDefinition * gtk_image_definition_new_empty (void); GtkImageDefinition * gtk_image_definition_new_icon_name (const char *icon_name); GtkImageDefinition * gtk_image_definition_new_gicon (GIcon *gicon); GtkImageDefinition * gtk_image_definition_new_surface (cairo_surface_t *surface); -GtkImageDefinition * gtk_image_definition_new_texture (GdkTexture *texture); +GtkImageDefinition * gtk_image_definition_new_texture (GdkTexture *texture, + int scale); GtkImageDefinition * gtk_image_definition_new_paintable (GdkPaintable *paintable); GtkImageDefinition * gtk_image_definition_ref (GtkImageDefinition *def); -- 2.30.2